package jef.tools.reflect;

import java.lang.reflect.Type;

/**
 * 描述一个属性。提供针对该属性的访问接口
 * @author Administrator
 *
 */
public interface Property {
	/**
	 * 得到名称
	 * @return
	 */
	String getName();
	/**
	 * 可读?
	 * @return
	 */
	boolean isReadable();
	/**
	 * 可写?
	 * @return
	 */
	boolean isWriteable();
	/**
	 * 得到值
	 * @param obj
	 * @return
	 */
	Object get(Object obj);
	/**
	 * 设置值
	 * @param obj
	 * @param value
	 */
	void set(Object obj,Object value);
	/**
	 * 得到类型
	 * @return
	 */
	Class<?> getType();
	/**
	 * 得到泛型类型
	 * @return
	 */
	Type getGenericType();
}
